from time import sleep

import page
from base.base import Base
from tool.get_driver import GetDriver
from tool.get_log import GetLogger

log = GetLogger().get_log()


class PageGlsx(Base):

    def pageglsx_click_glsx_tab(self):
        self.base_click_element(page.glsx_tab)

    # 青柠相关课程逻辑
    def pageglsx_click_list_qingning(self):
        if self.base_up_to_down_find_element(page.glsx_list_swipe_area,page.glsx_qingning):
            self.base_click_element(page.glsx_qingning)
            self.pageglsx_qingning()
        else:
            log.error("后台未配置该课程")
            # raise Exception("后台未配置该课程")

    def pageglsx_qingning(self):
        sleep(5)
        self.base_click_element(page.glsx_qingning_mflq_btn)
        try:
            self.base_click_element(page.jump_wxxcx_tanchuang)
        except:
            pass

    def pageglsx_if_qingning_success(self):
        sleep(5)
        if self.base_get_current_package_name() == 'com.tencent.mm' \
                or self.base_get_element_text(page.glsx_qingning_jump_to_zdqx) == '早道轻学':
            return True
        else:
            return False

    def pageglsx_click_qingning_list_btn(self):
        if self.base_up_to_down_find_element(page.glsx_list_swipe_area, page.glsx_qingning):
            sleep(5)
            self.base_click_element(page.glsx_qingning_list_btn)
            try:
                self.base_click_element(page.jump_wxxcx_tanchuang)
            except:
                pass
        else:
            log.error("后台未配置该课程")
            # raise Exception("后台未配置该课程")

    # 小程序直播课相关课程逻辑
    def pageglsx_click_list_xcxzbk(self):
        if self.base_up_to_down_find_element(page.glsx_list_swipe_area, page.glsx_xcxzbk):
            self.base_click_element(page.glsx_xcxzbk)
            self.pageglsx_xcxzbk()
        else:
            log.error("后台未配置该课程")
            # raise Exception("后台未配置该课程")

    def pageglsx_xcxzbk(self):
        sleep(5)
        self.base_click_element(page.glsx_xcxzbk_mfyy_btn)
        try:
            self.base_click_element(page.jump_wxxcx_tanchuang)
        except:
            pass

    def pageglsx_if_xcxzbk_success(self):
        for a in range(10):
            log.info(f'正在返回设置页面，第{a + 1}次尝试')
            if self.base_if_element_exist(page.glsx_xcxzbk):
                break
            else:
                self.driver.press_keycode(4)
        if self.base_if_element_exist(page.glsx_xcxzbk_jrzb_btn):
            return True
        else:
            return False

    def pageglsx_click_xzxzbk_list_btn(self):
        if self.base_up_to_down_find_element(page.glsx_list_swipe_area, page.glsx_xcxzbk_list_btn):
            self.base_click_element(page.glsx_xcxzbk_list_btn)
            try:
                self.base_click_element(page.jump_wxxcx_tanchuang)
            except:
                pass
        else:
            log.error("后台未配置该课程")
            # raise Exception("后台未配置该课程")

    def pageglsx_if_xzxzbk_list_success(self):
        if self.base_get_element_text(page.glsx_xcxzbk_list_btn) == '进入直播':
            return True
        else:
            return False

    # 咨询课1相关课程逻辑
    def pageglsx_zxk_status_check(self,loc):
        if self.base_get_element_text(loc) == '开始学习':
            raise Exception('该账号已经领取过该课次')
        else:
            pass

    def pageglsx_click_list_zxk_1(self):

        if self.base_up_to_down_find_element(page.glsx_list_swipe_area, page.glsx_zxk_1):
            self.pageglsx_zxk_status_check(page.glsx_zxk_1_list_btn)
            self.base_click_element(page.glsx_zxk_1)
            sleep(5)
            self.pageglsx_zxk_1()
        else:
            log.error("后台未配置该课程")
            # raise Exception("后台未配置该课程")

    def pageglsx_zxk_1(self):
        self.base_click_element(page.glsx_zxk_mflq)
        # print('点击咨询课')

    def pageglsx_if_zxk_1_success(self):
        return self.base_if_element_exist(page.glsx_zxk_lq_success)

    def pageglsx_click_list_zxk_1_mflq_btn(self):

        if self.base_up_to_down_find_element(page.glsx_list_swipe_area, page.glsx_zxk_1_list_btn):
            self.pageglsx_zxk_status_check(page.glsx_zxk_1_list_btn)
            sleep(5)
            self.base_click_element(page.glsx_zxk_1_list_btn)
        else:
            log.error("后台未配置该课程")
            # raise Exception("后台未配置该课程")

    def pageglsx_if_zxk_1_list_success(self):
        self.base_click_element(page.glsx_zxk_list_btn_close)
        if self.base_get_element_text(page.glsx_zxk_1_list_btn) == '开始学习':
            return True
        else:
            return False

    # 咨询课2相关课程逻辑
    def pageglsx_click_list_zxk_2(self):

        if self.base_up_to_down_find_element(page.glsx_list_swipe_area, page.glsx_zxk_2):
            self.pageglsx_zxk_status_check(page.glsx_zxk_2_list_btn)
            self.base_click_element(page.glsx_zxk_2)
            sleep(5)
            self.pageglsx_zxk_2()
        else:
            log.error("后台未配置该课程")
            # raise Exception("后台未配置该课程")


    def pageglsx_zxk_2(self):
        self.base_click_element(page.glsx_zxk_mflq)
        # print('点击咨询课')

    def pageglsx_if_zxk_2_success(self):
        return self.base_if_element_exist(page.glsx_zxk_lq_success)

    def pageglsx_click_list_zxk_2_mflq_btn(self):

        if self.base_up_to_down_find_element(page.glsx_list_swipe_area, page.glsx_zxk_2_list_btn):
            self.pageglsx_zxk_status_check(page.glsx_zxk_2_list_btn)
            sleep(5)
            self.base_click_element(page.glsx_zxk_2_list_btn)
        else:
            log.error("后台未配置该课程")
            # raise Exception("后台未配置该课程")

    def pageglsx_if_zxk_2_list_success(self):
        self.base_click_element(page.glsx_zxk_list_btn_close)
        if self.base_get_element_text(page.glsx_zxk_2_list_btn) == '开始学习':
            return True
        else:
            return False

    # 付费课相关课程逻辑
    def pageglsx_click_list_ffk(self):
        if self.base_up_to_down_find_element(page.glsx_list_swipe_area, page.glsx_ffk):
            self.base_click_element(page.glsx_ffk)
            self.pageglsx_ffk()
        else:
            log.error("后台未配置该课程")
            # raise Exception("后台未配置该课程")

    def pageglsx_ffk(self):
        sleep(5)
        self.base_click_element(page.glsx_ffk_ljgk)

    def pageglsx_if_ffk_success(self):
        return self.base_if_element_exist(page.glsx_ffk_pay_btn)

    def pageglsx_click_ffk_list_btn(self):
        if self.base_up_to_down_find_element(page.glsx_swip_area,page.glsx_ffk_list_btn):
            sleep(5)
            self.base_click_element(page.glsx_ffk_list_btn)
        else:
            log.error("后台未配置该课程")
            # raise Exception("后台未配置该课程")

    # 英语付费课相关逻辑
    def pageglsx_click_list_ffk_en(self):
        if self.base_up_to_down_find_element(page.glsx_list_swipe_area, page.glsx_ffk_en):
            self.base_click_element(page.glsx_ffk_en)
            self.pageglsx_ffk()
        else:
            log.error("后台未配置该课程")
            # raise Exception("后台未配置该课程")

    def pageglsx_ffk_en(self):
        sleep(5)
        self.base_click_element(page.glsx_ffk_ljgk_en)

    def pageglsx_if_ffk_success_en(self):
        return self.base_if_element_exist(page.glsx_ffk_pay_btn_en)

    def pageglsx_click_ffk_list_btn_en(self):
        if self.base_up_to_down_find_element(page.glsx_swip_area, page.glsx_ffk_list_btn_en):
            sleep(5)
            self.base_click_element(page.glsx_ffk_list_btn_en)
        else:
            log.error("后台未配置该课程")
            raise Exception("后台未配置该课程")

    def pageglsx_yurenjie(self):
        self.base_click_element(page.glsx_yurenjie)

    def pageglx_if_yurenjie_success(self):
        return True

    # 网销课相关课程逻辑
    def pageglsx_click_list_wxk(self):
        if self.base_up_to_down_find_element(page.glsx_list_swipe_area, page.glsx_wxk):
            self.base_click_element(page.glsx_wxk)
            sleep(5)
            self.pageglsx_wxk()
        else:
            raise Exception("后台未配置该课程")

    def pageglsx_wxk(self):
        self.base_click_element(page.glsx_wxk_mflq_btn)
        try:
            self.base_click_element(page.jump_wxxcx_tanchuang)
        except:
            pass

    def pageglsx_if_wxk_success(self):
        sleep(5)
        if self.base_get_current_package_name() == 'com.tencent.mm':
            return True
        else:
            return False

    def pageglsx_click_wxk_list_btn(self):
        if self.base_up_to_down_find_element(page.glsx_list_swipe_area, page.glsx_wxk_list_btn):
            sleep(5)
            self.base_click_element(page.glsx_wxk_list_btn)
            try:
                self.base_click_element(page.jump_wxxcx_tanchuang)
            except:
                pass
        else:
            raise Exception("后台未配置该课程")

    # 逻辑调用函数
    def pageglsx_logic_selected(self, type):
        class_type = {
            '日语发音课': self.pageglsx_qingning,
            '日语零基础入门直播课': self.pageglsx_xcxzbk,
            '在线咨询': self.pageglsx_zxk_1,
            '立即购课': self.pageglsx_ffk,
            '初春活动':self.pageglsx_yurenjie,
            '愚人节活动测试': self.pageglsx_yurenjie,
            '愚人节活动': self.pageglsx_yurenjie,
            '戳我领礼包': self.pageglsx_yurenjie,
            '樱花学习周': self.pageglsx_yurenjie,
            '日语零基础入门精品课': self.pageglsx_wxk
        }
        method = class_type.get(type)
        print(method)
        if method:
            method()
        else:
            log.error("未找到对应逻辑")
            print('未找到对应逻辑')

        result = {
            '日语发音课': self.pageglsx_if_qingning_success,
            '日语零基础入门直播课': self.pageglsx_if_xcxzbk_success,
            '在线咨询': self.pageglsx_if_zxk_1_success,
            '立即购课': self.pageglsx_if_ffk_success,
            '愚人节活动测试': self.pageglx_if_yurenjie_success,
            '初春活动': self.pageglx_if_yurenjie_success,
            '愚人节活动': self.pageglx_if_yurenjie_success,
            '戳我领礼包': self.pageglx_if_yurenjie_success,
            '樱花学习周': self.pageglx_if_yurenjie_success,
            '日语零基础入门精品课': self.pageglsx_if_wxk_success
        }
        result_method = result.get(type)
        print(result_method)
        if result_method:
            return result_method()
        else:
            log.error("未找到对应断言方法")
            print('未找到对应断言方法')

    # 逻辑获取函数
    def pageglsx_get_class_type(self):
        if self.base_if_element_exist(page.glsx_yurenjie):
            class_type = '戳我领礼包'
            return class_type
        elif self.base_if_element_exist(page.glsx_type_default_title):
            class_type = self.base_get_element_text(page.glsx_type_default_title)
            return class_type
        elif self.base_if_element_exist(page.glsx_type_ffk_btn):
            class_type = '立即购课'
            return class_type
        elif self.base_if_element_exist(page.glsx_type_zxzx_btn):
            class_type = '在线咨询'
            return class_type

    # 跟老师学页面返回逻辑
    def pageglsx_return_to_glsxpage_keycode(self):
        for a in range(10):
            log.info(f'正在返回设置页面，第{a + 1}次尝试')
            if self.base_if_element_exist(page.glsx_tab):
                break
            else:
                self.driver.press_keycode(4)
        self.base_click_element(page.wd_tab)
        self.base_click_element(page.glsx_tab)
        self.base_to_back_to_up(page.glsx_list_swipe_area)

    def pageglsx_return_to_glsxpage_keycode_no_swipe(self):
        for a in range(10):
            log.info(f'正在返回设置页面，第{a + 1}次尝试')
            if self.base_if_element_exist(page.glsx_tab):
                break
            else:
                self.driver.press_keycode(4)

    def pageglsx_click_banner(self):
        self.base_click_element(page.glsx_banner)

    def pageglsx_click_tanchuang(self):
        try:
            self.base_click_element(page.glsx_tanchuang)
        except:
            self.base_click_element(page.glsx_tanchuang_dongtu)

    def pageglsx_click_close_tanchuang(self):
        self.base_click_element(page.glsx_tanchuang_close)


if __name__ == '__main__':
    driver = GetDriver.get_app_driver()
    PageGlsx(driver).pageglsx_logic_selected('日语发音课')
    GetDriver.quit_app_driver()
